iT邦幫忙

2021 iThome 鐵人賽

DAY 8
0
Modern Web

JavaScript 基礎修練系列 第 8

[Day08] JavaScript - 迴圈_part 2

  • 分享至 

  • xImage
  •  

forEach

來看看forEach在MDN的定義

Array.prototype.forEach()

forEach() 方法會將陣列內的每個元素,皆傳入並執行給定的函式一次。

語法

arr.forEach(function callback(currentValue[, index[, array]]) {
    //your iterator
}[, thisArg]);

參數

  • callback:
    這個 callback 函式將會把 Array 中的每一個元素作為參數,帶進本 callback 函式裡,每個元素各執行一次,接收三個參數:
    • currentValue: 代表當前Array元素值
    • index [optional]: 代表當前Array元素的索引值
    • array [optional]: 呼叫 forEach()方法的那個 Array本身,也就是上面語法中的 arr。
  • thisArg [optional]:
    執行 callback 回呼函式的 this(即參考之 Object)值。

與for loop不同之處:

假設我們有以下陣列:

let myArray = [2,4,6,8,10]
  • 若使用傳統for loop,需取得陣列的長度index,並透過迴圈去把每個索引(index)的元素(item)取出來做運算。

    for (var i=0; i < myArray.length ; i++ ) {
      console.log(`index:${i}, value:${myArray[i]}`);  
    }
    /*output:
     index:0, value:2
     index:1, value:4
     index:2, value:6
     index:3, value:8
     index:4, value:10 */
    
  • 使用forEach方法,看起來更簡單明瞭:
    會對陣列內的每個元素去做操作,傳入並執行給定的函式。自然的會將每一個元素去傳遞進去console.log ,而不需要檢查邊界條件。

    myArray.forEach(function(item, index) {
        console.log(`index:${index}, value:${item}`);
    });
    /*output:
      index:0, value:2
      index:1, value:4
      index:2, value:6
      index:3, value:8
      index:4, value:10*/
    
    

do...while

do...while語句是while語句的另一種變形的版本,差異只在於"它會先執行一次區塊中的語句,再進行判斷情況",也就是會"保證至少執行一次其中的語句",基本語法結構如下:

語法

do
  statement
while (condition);
  • statement:
    執行至少一次的語句,在並每次condition 值為true時重新執行。若要執行多行語句,使用block語句({ ... })包裹這些語句。
  • condition:
    循環中每次計算的表達式。如果是condition為true,就會再次進statement執行。當condition為false時,則跳到後面do...while的語句。

範例
下面的例子中,do...while 循環至少有一次,並且繼續循環直到i不小於 5 時結束。

var result = '';
var i = 0;
do {
   i += 1;
   result += i + ' ';
} while (i < 5);

//'1 2 3 4 5 '


資料來源:
https://developer.mozilla.org/zh-TW/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach
https://realdennis.medium.com/array-%E5%8E%9F%E5%9E%8B%E7%9A%84-foreach-%E6%9C%89%E5%A4%9A%E5%A5%BD%E7%94%A8-%E5%AD%B8%E6%9C%83%E9%AB%98%E9%9A%8E%E5%87%BD%E6%95%B8%E4%B9%8B%E5%BE%8C%E9%83%BD%E4%B8%8D%E6%83%B3%E5%AF%AB-javascript-%E4%BB%A5%E5%A4%96%E7%9A%84%E7%A8%8B%E5%BC%8F%E8%AA%9E%E8%A8%80%E4%BA%86-dc4b594a045a
https://eyesofkids.gitbooks.io/javascript-start-from-es6/content/part3/loop.html
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/do...while


上一篇
[Day07] JavaScript - 迴圈_part 1
下一篇
[Day09] JavaScript - 流程判斷
系列文
JavaScript 基礎修練30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言